package com.hs.dao.impl;

import com.hs.dao.UserDao;
import com.hs.pojo.User;
import com.hs.util.JDBCUtils;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/*
Dao 实现类 用来对数据库操作的 操作的是数据库逻辑
 */
public class UserDaoImpl implements UserDao {
    @Override
    public User SelectByUsername(String username) {
        String sql="select * from user where username=?";
        //封装数据
        Object obj[]={username};
        //调用查询方法
        ResultSet res=JDBCUtils.query(sql,obj);
        User user=null;
        while (true){
            try {
                if (!res.next())break;
                //获取每一个数据
                user=new User(
                        res.getInt(1),
                        res.getString(2),
                        res.getString(3),
                        res.getString(4),
                        res.getString(5)
                );
            } catch (SQLException e) {
                e.printStackTrace();
            }
            }
            JDBCUtils.close();
        return user;
    }

    @Override
    public int login(String username, String Password) {

        String sql="select * from user where username=?";
        //封装数据
        Object obj[]={username};
        return 0;
    }

    @Override
    public List<User> selectUsers(int startIndex,int pageSize ) {
        String sql="select * from user limit ?,?";
        Object obj[]={startIndex,pageSize};
        ResultSet res = JDBCUtils.query(sql, obj);
        //创建一个空的集合
        List<User> list=new ArrayList<>();
        //遍历数据存入到list集合中
        while (true){
            try {
                if(!res.next())break;
                User user=new User(
                        res.getInt(1),
                        res.getString(2),
                        res.getString(3),
                        res.getString(4),
                        res.getString(5)
                );
                //把user对象放到list集合中
                list.add(user);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        //释放资源
        JDBCUtils.close();
        return list;
    }

    //查询总条数
    @Override
    public int selectCount() {
        String sql="select count(1) from user";
        Object obj[]={};
        ResultSet res = JDBCUtils.query(sql, obj);
        //总数据变量值
        int count =0;
        while (true){
            try {
                if (!res.next())break;
                count = res.getInt(1);

            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        JDBCUtils.close();
        return count;
    }

    @Override
    public int insertUser(User user) {
        String sql="insert into user(username,password,email,phone) values(?,MD5(?),?,?)";
        Object obj[]={
                user.getUsername(),
                user.getPassword(),
                user.getEmail(),
                user.getPhone()};
        int insert = JDBCUtils.update(sql, obj);
        return insert;
    }

    @Override
    public User SelectUserById(int id) {
        //url localhost:8080/user&id=1
        String sql="select * from user where id=?";
        Object obj[]={id};
        ResultSet res = JDBCUtils.query(sql, obj);
        User user=null;
        while (true){
            try {
                if(!res.next())break;
                user=new User(
                    res.getInt(1),
                    res.getString(2),
                    res.getString(3),
                    res.getString(4),
                    res.getString(5)
                );
            } catch (SQLException e) {
                e.printStackTrace();
            }

        }
        JDBCUtils.close();
        return user;
    }

    @Override
    public int updateUser(User user) {
        String sql="update user set username=?,email=?,phone=? where id= ? ";
        Object obj[]={
                user.getUsername(),user.getEmail(),user.getPhone(),user.getId()
        };
        int update = JDBCUtils.update(sql, obj);
        return update;
    }

    @Override
    public int deleteUser(int id) {
        String sql="delete from user where id=?";
        Object obj[]={id};
        int delete = JDBCUtils.update(sql, obj);
        return delete;
    }


    //@Override
//    public User SelectByUsername(String username) {
////        Connection conn=null;
////        Statement stat=null;
//        ResultSet res=null;
//        //定义返回值对象
//        User user=null;
//        /*
//       操作数据库
//        1，注册驱动
//        2，获取连接
//        3，获取执行对象
//        4，定义sql语句
//        5，获取结果集
//        6，关闭连接
//         */
//
//        try {
//            //1，注册驱动 加载mysql的驱动
//            Class.forName("com.mysql.cj.jdbc.Driver");
//            //2获取连接
//            conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/hskjteacher?useUnicode=true&characterEncoding=utf-8",
//                    "root","12345");
//            //3，获取执行对象
//            stat = conn.createStatement();
//            //4,定义sql语句
//            String sql="select * from user where username='"+username+"'";
//            //5，执行sql语句
//            res=stat.executeQuery(sql);
//            //6,获取结果集
//            while (true){
//                if (!res.next())break;
//                //获取每一个数据
//                user=new User(
//                        res.getInt(1),
//                        res.getString(2),
//                        res.getString(3),
//                        res.getString(4),
//                        res.getString(5)
//                        );
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
       // finally {
//            if(conn!=null){
//                try {
//                    conn.close();
//                } catch (SQLException e) {
//                    e.printStackTrace();
//                }
//            }
//            if (res!=null) {
//                try {
//                    res.close();
//                } catch (SQLException e) {
//                    e.printStackTrace();
//                }
//            }
//        }
//        return user;
//    }


}
